Code coverage report for src/children.js

Statements: 25.76% (17 / 66)      Branches: 0% (0 / 28)      Functions: 33.33% (4 / 12)      Lines: 26.56% (17 / 64)      Ignored: none     

All files » src/ » children.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 1321     1   1   1     1   1 1               1       1     1   1 1                     1                                                         1       1                                                                                                 1     1        
System.register([], function (_export) {
  "use strict";
 
  var noMutations, ChildObserver, ChildObserverBinder;
 
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
  return {
    setters: [],
    execute: function () {
      noMutations = [];
 
      ChildObserver = (function () {
        function ChildObserver(property, changeHandler, selector) {
          _classCallCheck(this, ChildObserver);
 
          this.selector = selector;
          this.changeHandler = changeHandler;
          this.property = property;
        }
 
        ChildObserver.prototype.createBinding = function createBinding(target, behavior) {
          return new ChildObserverBinder(this.selector, target, this.property, behavior, this.changeHandler);
        };
 
        return ChildObserver;
      })();
 
      _export("ChildObserver", ChildObserver);
 
      ChildObserverBinder = (function () {
        function ChildObserverBinder(selector, target, property, behavior, changeHandler) {
          _classCallCheck(this, ChildObserverBinder);
 
          this.selector = selector;
          this.target = target;
          this.property = property;
          this.behavior = behavior;
          this.changeHandler = changeHandler;
          this.observer = new MutationObserver(this.onChange.bind(this));
        }
 
        ChildObserverBinder.prototype.bind = function bind(source) {
          var items,
              results,
              i,
              ii,
              node,
              behavior = this.behavior;
 
          this.observer.observe(this.target, { childList: true, subtree: true });
 
          items = behavior[this.property];
          if (!items) {
            items = behavior[this.property] = [];
          } else {
            items.length = 0;
          }
 
          results = this.target.querySelectorAll(this.selector);
 
          for (i = 0, ii = results.length; i < ii; ++i) {
            node = results[i];
            items.push(node.primaryBehavior ? node.primaryBehavior.executionContext : node);
          }
 
          if (this.changeHandler) {
            this.behavior[this.changeHandler](noMutations);
          }
        };
 
        ChildObserverBinder.prototype.unbind = function unbind() {
          this.observer.disconnect();
        };
 
        ChildObserverBinder.prototype.onChange = function onChange(mutations) {
          var items = this.behavior[this.property],
              selector = this.selector;
 
          mutations.forEach(function (record) {
            var added = record.addedNodes,
                removed = record.removedNodes,
                prev = record.previousSibling,
                i,
                ii,
                primary,
                index,
                node;
 
            for (i = 0, ii = removed.length; i < ii; ++i) {
              node = removed[i];
              if (node.nodeType === 1 && node.matches(selector)) {
                primary = node.primaryBehavior ? node.primaryBehavior.executionContext : node;
                index = items.indexOf(primary);
                if (index != -1) {
                  items.splice(index, 1);
                }
              }
            }
 
            for (i = 0, ii = added.length; i < ii; ++i) {
              node = added[i];
              if (node.nodeType === 1 && node.matches(selector)) {
                primary = node.primaryBehavior ? node.primaryBehavior.executionContext : node;
                index = 0;
 
                while (prev) {
                  if (prev.nodeType === 1 && prev.matches(selector)) {
                    index++;
                  }
 
                  prev = prev.previousSibling;
                }
 
                items.splice(index, 0, primary);
              }
            }
          });
 
          if (this.changeHandler) {
            this.behavior[this.changeHandler](mutations);
          }
        };
 
        return ChildObserverBinder;
      })();
 
      _export("ChildObserverBinder", ChildObserverBinder);
    }
  };
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3RlbXBsYXRpbmcvc3JjL2NoaWxkcmVuLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztNQUFJLFdBQVcsRUFFRixhQUFhLEVBWWIsbUJBQW1COzs7Ozs7O0FBZDVCLGlCQUFXLEdBQUcsRUFBRTs7QUFFUCxtQkFBYTtBQUNiLGlCQURBLGFBQWEsQ0FDWixRQUFRLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBQztnQ0FEbkMsYUFBYTs7QUFFdEIsY0FBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDekIsY0FBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7QUFDbkMsY0FBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDMUI7O0FBTFUscUJBQWEsV0FPeEIsYUFBYSxHQUFBLHVCQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUM7QUFDN0IsaUJBQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDcEc7O2VBVFUsYUFBYTs7OytCQUFiLGFBQWE7O0FBWWIseUJBQW1CO0FBQ25CLGlCQURBLG1CQUFtQixDQUNsQixRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFDO2dDQURyRCxtQkFBbUI7O0FBRTVCLGNBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLGNBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0FBQ25DLGNBQUksQ0FBQyxRQUFR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QyxDQUFDO2lCQUN4QjtlQUNGO2FBQ0Y7O0FBRUQsaUJBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFDO0FBQ3hDLGtCQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLGtCQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUM7QUFDL0MsdUJBQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0FBQzlFLHFCQUFLLEdBQUcsQ0FBQyxDQUFDOztBQUVWLHVCQUFNLElBQUksRUFBQztBQUNULHNCQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUM7QUFDL0MseUJBQUssRUFBRSxDQUFDO21CQUNUOztBQUVELHNCQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztpQkFDN0I7O0FBRUQscUJBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztlQUNqQzthQUNGO1dBQ0YsQ0FBQyxDQUFDOztBQUVILGNBQUcsSUFBSSxDQUFDLGFBQWEsRUFBQztBQUNwQixnQkFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7V0FDOUM7U0FDRjs7ZUFqRlUsbUJBQW1COzs7cUNBQW5CLG1CQUFtQiIsImZpbGUiOiIvVXNlcnMvRWlzZW5iZXJnRWZmZWN0L0RvY3VtZW50cy9HaXRIdWIvVGhlIER1cmFuZGFsIFByb2plY3QvYXVyZWxpYS90ZW1wbGF0aW5nL3NyYy9jaGlsZHJlbi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBub011dGF0aW9ucyA9IFtdO1xuXG5leHBvcnQgY2xhc3MgQ2hpbGRPYnNlcnZlciB7XG4gIGNvbnN0cnVjdG9yKHByb3BlcnR5LCBjaGFuZ2VIYW5kbGVyLCBzZWxlY3Rvcil7XG4gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHRoaXMuY2hhbmdlSGFuZGxlciA9IGNoYW5nZUhhbmRsZXI7XG4gICAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5O1xuICB9XG5cbiAgY3JlYXRlQmluZGluZyh0YXJnZXQsIGJlaGF2aW9yKXtcbiAgICByZXR1cm4gbmV3IENoaWxkT2JzZXJ2ZXJCaW5kZXIodGhpcy5zZWxlY3RvciwgdGFyZ2V0LCB0aGlzLnByb3BlcnR5LCBiZWhhdmlvciwgdGhpcy5jaGFuZ2VIYW5kbGVyKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2hpbGRPYnNlcnZlckJpbmRlciB7XG4gIGNvbnN0cnVjdG9yKHNlbGVjdG9yLCB0YXJnZXQsIHByb3BlcnR5LCBiZWhhdmlvciwgY2hhbmdlSGFuZGxlcil7XG4gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHRoaXMucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICB0aGlzLmJlaGF2aW9yID0gYmVoYXZpb3I7XG4gICAgdGhpcy5jaGFuZ2VIYW5kbGVyID0gY2hhbmdlSGFuZGxlcjtcbiAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIGJpbmQoc291cmNlKXtcbiAgICB2YXIgaXRlbXMsIHJlc3VsdHMsIGksIGlpLCBub2RlLCBiZWhhdmlvciA9IHRoaXMuYmVoYXZpb3I7XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy50YXJnZXQsIHtjaGlsZExpc3Q6dHJ1ZSwgc3VidHJlZTogdHJ1ZX0pO1xuXG4gICAgaXRlbXMgPSBiZWhhdmlvclt0aGlzLnByb3BlcnR5XTtcbiAgICBpZighaXRlbXMpe1xuICAgICAgaXRlbXMgPSBiZWhhdmlvclt0aGlzLnByb3BlcnR5XSA9IFtdO1xuICAgIH1lbHNle1xuICAgICAgaXRlbXMubGVuZ3RoID0gMDtcbiAgICB9XG5cbiAgICByZXN1bHRzID0gdGhpcy50YXJnZXQucXVlcnlTZWxlY3RvckFsbCh0aGlzLnNlbGVjdG9yKTtcblxuICAgIGZvcihpID0gMCwgaWkgPSByZXN1bHRzLmxlbmd0aDsgaSA8IGlpOyArK2kpe1xuICAgICAgbm9kZSA9IHJlc3VsdHNbaV07XG4gICAgICBpdGVtcy5wdXNoKG5vZGUucHJpbWFyeUJlaGF2aW9yID8gbm9kZS5wcmltYXJ5QmVoYXZpb3IuZXhlY3V0aW9uQ29udGV4dCA6IG5vZGUpO1xuICAgIH1cblxuICAgIGlmKHRoaXMuY2hhbmdlSGFuZGxlcil7XG4gICAgICB0aGlzLmJlaGF2aW9yW3RoaXMuY2hhbmdlSGFuZGxlcl0obm9NdXRhdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHVuYmluZCgpe1xuICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgb25DaGFuZ2UobXV0YXRpb25zKXtcbiAgICB2YXIgaXRlbXMgPSB0aGlzLmJlaGF2aW9yW3RoaXMucHJvcGVydHldLFxuICAgICAgICBzZWxlY3RvciA9IHRoaXMuc2VsZWN0b3I7XG5cbiAgICBtdXRhdGlvbnMuZm9yRWFjaChyZWNvcmQgPT4ge1xuICAgICAgdmFyIGFkZGVkID0gcmVjb3JkLmFkZGVkTm9kZXMsXG4gICAgICAgICAgcmVtb3ZlZCA9IHJlY29yZC5yZW1vdmVkTm9kZXMsXG4gICAgICAgICAgcHJldiA9IHJlY29yZC5wcmV2aW91c1NpYmxpbmcsXG4gICAgICAgICAgaSwgaWksIHByaW1hcnksIGluZGV4LCBub2RlO1xuXG4gICAgICBmb3IoaSA9IDAsIGlpID0gcmVtb3ZlZC5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgICAgbm9kZSA9IHJlbW92ZWRbaV07XG4gICAgICAgIGlmKG5vZGUubm9kZVR5cGUgPT09IDEgJiYgbm9kZS5tYXRjaGVzKHNlbGVjdG9yKSl7XG4gICAgICAgICAgcHJpbWFyeSA9IG5vZGUucHJpbWFyeUJlaGF2aW9yID8gbm9kZS5wcmltYXJ5QmVoYXZpb3IuZXhlY3V0aW9uQ29udGV4dCA6IG5vZGU7XG4gICAgICAgICAgaW5kZXggPSBpdGVtcy5pbmRleE9mKHByaW1hcnkpO1xuICAgICAgICAgIGlmKGluZGV4ICE9IC0xKXtcbiAgICAgICAgICAgIGl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvcihpID0gMCwgaWkgPSBhZGRlZC5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgICAgbm9kZSA9IGFkZGVkW2ldO1xuICAgICAgICBpZihub2RlLm5vZGVUeXBlID09PSAxICYmIG5vZGUubWF0Y2hlcyhzZWxlY3Rvcikpe1xuICAgICAgICAgIHByaW1hcnkgPSBub2RlLnByaW1hcnlCZWhhdmlvciA/IG5vZGUucHJpbWFyeUJlaGF2aW9yLmV4ZWN1dGlvbkNvbnRleHQgOiBub2RlO1xuICAgICAgICAgIGluZGV4ID0gMDtcblxuICAgICAgICAgIHdoaWxlKHByZXYpe1xuICAgICAgICAgICAgaWYocHJldi5ub2RlVHlwZSA9PT0gMSAmJiBwcmV2Lm1hdGNoZXMoc2VsZWN0b3IpKXtcbiAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJldiA9IHByZXYucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGl0ZW1zLnNwbGljZShpbmRleCwgMCwgcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmKHRoaXMuY2hhbmdlSGFuZGxlcil7XG4gICAgICB0aGlzLmJlaGF2aW9yW3RoaXMuY2hhbmdlSGFuZGxlcl0obXV0YXRpb25zKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==